﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using NHibernate.Cfg;

namespace OWLServer.persistencia.util
{
    /// <summary>
    /// Utilidades para la gestión de Hibernate.
    /// </summary>
    class UtilidadesNHibernate
    {
        private const string ARCHIVO_CONF_NHIBERNATE = "./persistencia/hibernate.cfg.xml";

        private static ISessionFactory sessionFactory;
        /// <summary>
        /// Factoría de Sesiones de NHibernate
        /// </summary>
        private static ISessionFactory SessionFactory
        {
            get
            {
                if (sessionFactory == null)
                {
                    Configuration configuration = new Configuration();
                    configuration.Configure();
                    sessionFactory = configuration.BuildSessionFactory();
                }
                return sessionFactory;
            }
        }

        /// <summary>
        /// Crea una nueva sesion abierta en a la base de datos
        /// </summary>
        /// <returns>Sesion a la base de datos creada</returns>
        public static ISession OpenSession()
        {
            return SessionFactory.OpenSession();
        }
    }
}
